// 1. 定义Person构造函数
// function Person() {
//   this.head = 1
//   this.foot = 2
// }
function Person() {}
Person.prototype.head = 1
Person.prototype.foot = 2
Person.prototype.show = function () {
  console.log(`{name:${this.name},no:${this.no},foot:${this.foot},head:${this.head},gender:${this.gender}}`)
}

// 2. 定义Student构造函数
function Student(name, no) {
  this.name = name
  this.no = no
}

// 3. 使用原型链实现继承
// Student.prototype = new Person()
Student.prototype = Person.prototype

// 4. 原型链继承会导出构造函数紊乱
Student.prototype.constructor = Student

// 5. 创建Student的实例对象
// 第一个学生对象
let stu = new Student('Tom', 1)
console.log(stu) // Student { name: 'Tom', no: 1 }
console.log('foot = ' + stu.foot) // foot = 2
console.log('head = ' + stu.head) // head = 1
// 给原型对象添加一个属性gender
stu.__proto__.gender = '女'

// 第二学生实例对象
let stu2 = new Student('Sam', 2)
console.log('head = ' + stu2.head)
console.log('gender = ' + stu2.gender)
stu2.__proto__.gender = '男'

// 第三学生实例对象
console.log(new Student().gender) // 男

stu2.show() // {name:Sam,no:2,foot:2,head:1,gender:男}
console.log(stu2) // Student { name: 'Sam', no: 2 }
console.log(Student.prototype) // { head: 1, foot: 2, show: [Function (anonymous)], gender: '男' }
